package com.dhcc.core.modules.system.service;

import com.dhcc.core.framework.base.service.IBaseService;
import com.dhcc.core.framework.datascope.DataScope;
import com.dhcc.core.framework.result.node.ZTreeNode;
import com.dhcc.core.modules.system.entity.Dept;
import com.dhcc.core.modules.system.vo.ExportDeptVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 部门服务
 *
 * @ClassName: IDeptService
 * @Description: TODO
 * @author: cyf
 * @date: 2018年1月2日 上午10:41:52
 */
public interface IDeptService extends IBaseService<Dept> {

    /**
     * 删除部门
     *
     * @author cyf
     * @Date 2017/5/5 22:20
     */
    void delDept(Long deptId);

    /**
     * 获取ztree的节点列表
     *
     * @return
     * @date 2017年2月17日 下午8:28:43
     */
    List<ZTreeNode> tree();

    /**
     * 获取ztree的节点列表
     *
     * @return
     * @date 2017年2月17日 下午8:28:43
     */
    List<ZTreeNode> tree(DataScope dataScope);
    /**
     * 列表数据
     *
     * @Title: list
     * @Description: TODO
     * @param condition
     * @return
     * @return: List<Map<String,Object>>
     */
    List<Dept> list(Long parentId, String condition);

    /**
     * 列表数据
     *
     * @Title: list
     * @Description: TODO
     * @param condition
     * @return
     * @return: List<Map<String,Object>>
     */
    List<Dept> list(DataScope dataScope,Long parentId, String condition);

    /**
     * 列表数据
     *
     * @Title: listV1
     * @Description: TODO
     * @param code
     * @return
     * @return: ListV1<Map<String,Object>>
     */
    List<Dept> listV1(String code);

    Dept selectByCode(String code);

    Boolean hasDeptByCode(String code);

    List<ExportDeptVo> exportDepts(@Param("condition") String condition);

    void importDepts(List<List<Object>> all, Long parentId);

    int syncDept(Long parentId);
}
